iT邦幫忙

2023 iThome 鐵人賽

DAY 23
1

關於程式碼的效率與優化

小時候超級任天堂的主機可以在 很低記憶體與CPU裡作出精美的大作,而現在動不動就在比主機的效能。程式開發也是,現在程式碼的效率常常被寬容地對待。比起以前低階語言的時代,現在程式碼的效率常常被寬容地對待,在某種程度上,這是合理的,因為記憶體相對便宜,而工程師的成本很高(應該) 。至少昨天 JCConf 有講者說買 Mac 約是工程師 1-2 月的薪水,但可以增加工程師效率。

然而,程式碼本身的效率也不輕忽。也許你的應用程式正在數百萬的裝置上運行,所以它消耗了大量的能源,而一些電池使用優化可能節省了足夠的能源來供電一個小城市。也許你的公司為伺服器及其維護支付了大量的錢,而某些優化可能使這顯著地更便宜。

從長遠來看,效率是很重要的,但優化並不容易。過早的優化往往 B > Z。然後,有一些規則可以幫助你作出更高效的程式。這些是便宜的勝利:它們幾乎不花任何成本,但它們仍然可以幫助我們顯著提高性能。當它們不足夠時,我們應該使用分析器並優化性能的關鍵部分,JCConf 也有講者提到有些關鍵部分考慮使用 C++ 優化。

Effective Kotlin 第7、8章

  • 第7章:使其更便宜 - 關於性能的更一般的建議。
  • 第8章:高效的集合處理 - 專注於集合處理。

這些章節著重於可以應用於每日開發的一般規則來優化。關於在程式關鍵部分,Kotlin 的性能如何可能被優化。可讀性、安全性還有性能之間是需要權衡的。

技巧一 使用 object 減少物件建立

重複使用一個物件,而不是每次建立是一種非常簡單的方法,使用 object 宣告(singleton)。可以避免每次都建立物件。這是一個常見技巧,尤其是當我們在用 sealed 建模時,對於沒有傳入值的成員。我們可以直接定義成 object,那在每次取用時就不會重新 new 了


sealed class ManagerMessage
class CodeProduced(val code: String) : ManagerMessage()
object ProductionStopped : ManagerMessage()

sealed interface AdView
object FacebookAd : AdView
object GoogleAd : AdView
class OwnAd(val text: String, val imgUrl: String) : AdView

每日一推 (G)I-DLE

I Want That (G)I-DLE 是最新英文歌曲,收錄在她們首張英語迷你專輯《HEAT》中作為主打歌,昨天已釋出 MV 並已有200萬個觀看次數。

Yes


上一篇
D22: 雲原生 Kotlin 也有份? 談 Arrow KT Resilience
下一篇
D24: Kotlin 效能 - 減少物件建立與快取
系列文
讓 Kotlin 程式碼更道地 - 談 Effective Kotlin 與相關的 Design Pattern30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
楊舒安
iT邦新手 2 級 ‧ 2023-10-08 01:15:04

說到任天堂,最近在Youtube上看到這個~~

Yes

還在思考要怎麼樣把 kotlin 跟它沾上邊XD

Brandy iT邦新手 3 級 ‧ 2023-10-08 21:02:46 檢舉

可以考慮談策略模式或是工廠模式

Yes

我要留言

立即登入留言